﻿/*!
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */
 
using System.Configuration;

namespace Pittypat.Configuration
{
    /// <summary>
    /// 用于配置一个功能。
    /// </summary>
    public sealed class FunctionConfig : ConfigurationElement
    {
        /// <summary>
        /// 获取或者设置功能的标识符。
        /// </summary>
        [ConfigurationProperty("identifier", IsRequired = true, IsKey = true)]
        public string Identifier
        {
            get
            {
                return (string)this["identifier"];
            }
            set
            {
                this["identifier"] = value;
            }
        }

        /// <summary>
        /// 获取或者设置功能上传文件的保存路径。
        /// </summary>
        /// <remarks>
        /// 路径可以使用 "~/" 作为前缀，建议总是使用该前缀，防止用户将 App 部署到非根目录下时的路径错误。
        /// </remarks>
        [ConfigurationProperty("uploadPath", IsRequired = false)]
        public string UploadPath
        {
            get
            {
                return (string)this["uploadPath"];
            }
            set
            {
                this["uploadPath"] = value;
            }
        }

        /// <summary>
        /// 获取或者设置功能上传文件的最大尺寸，单位：KB。默认为 102400，也就是 100MB。
        /// </summary>
        [ConfigurationProperty("maxUploadSize", IsRequired = false, DefaultValue = 102400)]
        public int MaxUploadSize
        {
            get
            {
                var size = (int)this["maxUploadSize"];
                return size < 1 ? 1 : (size > 2097152 ? 2097152 : size);
            }
            set
            {
                this["maxUploadSize"] = value;
            }
        }

        /// <summary>
        /// 获取或者设置允许功能上传文件的扩展名称的列表，扩展名称应该包含句点，多个之间使用 "," 分隔，比如 ".png,.gif,.svg,.jpg"。
        /// </summary>
        [ConfigurationProperty("uploadExtensions", IsRequired = false)]
        public string UploadExtensions
        {
            get
            {
                return (string)this["uploadExtensions"];
            }
            set
            {
                this["uploadExtensions"] = value;
            }
        }
    }
}
